//package com.wbk.lotterysystemgateway.filter;
//
//import com.alibaba.fastjson.JSONObject;
//import org.dom4j.Document;
//import org.dom4j.Element;
//import org.dom4j.io.SAXReader;
//import org.springframework.stereotype.Component;
//
//import javax.servlet.http.HttpServletRequest;
//import java.io.InputStream;
//import java.util.*;
//
///*******************************************************************************
// * @project: ganlee
// * @package: com.coolgua.common.util
// * @author: wbk
// * @created: 2021/1/12
// * @purpose:
// *
// * Copyright 2021 coolgua.com All rights reserved.
// ******************************************************************************/
//@Component
//public class WxMessageUtil {
//
//    /**
//     * 请求消息类型：事件推送
//     */
//    public final String REQ_MESSAGE_TYPE_EVENT = "event";
//
//    /**
//     * 事件类型：subscribe(未关注用户扫描带参二维码)
//     */
//    public final String EVENT_TYPE_SUBSCRIBE = "subscribe";
//
//    /**
//     * 事件类型：scan(关注用户扫描带参二维码)
//     */
//    public final String EVENT_TYPE_SCAN = "scan";
//
//    /**
//     * 解析微信服务器发过来的xml格式的消息将其转换为JSONObject
//     *
//     * @param request
//     * @return
//     * @throws Exception
//     */
//    public JSONObject parseXml(HttpServletRequest request) throws Exception {
//        // 将解析结果存储在JSONObject中
//        JSONObject jsonObject = new JSONObject();
//        InputStream inputStream = request.getInputStream();
//        SAXReader reader = new SAXReader();
//        Document document = reader.read(inputStream);
//        // 得到XML的根元素
//        Element root = document.getRootElement();
//        // 得到根元素的所有子节点
//        @SuppressWarnings("unchecked")
//        List<Element> elementList = root.elements();
//        // 判断有没有子元素列表
//        if (elementList.size() == 0) {
//            jsonObject.put(root.getName(), root.getText());
//        } else {
//            for (Element e : elementList) {
//                jsonObject.put(e.getName(), e.getText());
//            }
//        }
//        inputStream.close();
//        return jsonObject;
//    }
//
//    /**
//     * JSONObject 转 XML
//     *
//     * @param jsonObject
//     * @return
//     */
//    public String jsonToXml(JSONObject jsonObject) {
//        StringBuffer sb = new StringBuffer();
//        sb.append("<xml>");
//        mapToXml2(jsonObject.getInnerMap(), sb);
//        sb.append("</xml>");
//        return sb.toString();
//    }
//
//    private static void mapToXml2(Map<String, Object> map, StringBuffer sb) {
//        Set<String> set = map.keySet();
//        Iterator<String> iterator = set.iterator();
//        while (iterator.hasNext()) {
//            String key = iterator.next();
//            Object value = map.get(key);
//            if (null == value) {
//                value = "";
//            }
//            if ("java.util.ArrayList".equals(value.getClass().getName())) {
//                ArrayList list = (ArrayList) map.get(key);
//                sb.append("<").append(key).append(">");
//                for (Object o : list) {
//                    HashMap<String, Object> hm = (HashMap<String, Object>) o;
//                    mapToXml2(hm, sb);
//                }
//                sb.append("</").append(key).append(">");
//            } else {
//                if (value instanceof HashMap) {
//                    sb.append("<").append(key).append(">");
//                    mapToXml2((HashMap) value, sb);
//                    sb.append("</").append(key).append(">");
//                } else {
//                    sb.append("<").append(key).append("><![CDATA[").append(value).append("]]></").append(key).append(">");
//                }
//            }
//        }
//    }
//
//}
